package com.konglz.consumer.test;

import com.rabbitmq.client.*;

/**
 * @Description
 * @Author konglz
 * @Data 2023/5/12 1:31
 */
public class ConsumerDemo {
    public static void main(String[] args) throws Exception {
        // 1. 创建连接（connection），需要设置相关参数
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        factory.setPort(5672);
        factory.setVirtualHost("/");
        factory.setUsername("admin");
        factory.setPassword("admin");
        Connection connection = factory.newConnection();
        // 2. 创建信道（channel）
        Channel channel = connection.createChannel();
        // 3. 消费消息
        // 定义接收消息回调consumerTag: 通道的名称 delivery: 里面包含了消息内容
        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println("消费者获取到的消息为：" + message);
        };
        // 定义取消接收消息回调
        CancelCallback cancelCallback = (consumerTag) -> {
            System.out.println("消费者取消消息接收");
        };
        /**
         * 参数：
         *  第一个参数： 队列的名称
         *  第二个参数： 是否自动应道 true：自动应答 false：不自动应答
         *  第三个参数： 接收消息的回调
         *  第四个参数： 取消消息的回调
         */
        channel.basicConsume("hello", true, deliverCallback, cancelCallback);
    }
}
